
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shell正则表达式 列表</title>
<style type="text/css">
* {
	padding:0;
	margin:0;
	font-size:12px;
	font-family:"Courier New", Courier, monospace;
}
ul {
	list-style: none outside none;
}
div {
	margin:0 auto;
	width:1200px;
}
ul li {
	float:left;
	padding:0 2px;
}
ul:hover {
	background:#EDE6D6;
}
.head {
	padding:10px 0;
	margin:30px auto;
	text-align:center;
}
.head h1 {
	font:26px/26px Verdana, Geneva, sans-serif;
}
.title {
	margin:20px auto;
}
.title h2 {
	font-size:16px;
	font-family:Verdana, Arial, Helvetica, sans-serif;
}
.title p {
	line-height:24px;
}
.c {
	text-align:center;
}
.main {
	border-top:2px solid #000;
	border-bottom:3px solid #000;
}
.line {
	border-top:1px solid #000;
	line-height:26px;
	overflow:hidden
}
.h {
	background:#CCC;
	font-weight:bold;
}
.bds {
	width:80px;
	border-right:1px solid #000;
}
.des {
	width:300px;
	border-right:1px solid #000;
}
.exp {
	width:376px;
	border-right:1px solid #000;
}
.bres {
	width:100px;
	border-right:1px solid #000;
}
.eres {
	width:110px;
	border-right:1px solid #000;
}
.pyres {
	width:100px;
	border-right:1px solid #000;
}
.peres {
	width:100px;
}
</style>
</head>
<body>
<div class="head">
  <h1>Shell正则表达式</h1>
</div>
<div class="title">
  <h2>正则表达式的分类</h2>
  <ol style="margin-left:26px;line-height:24px">
    <li>基本的正则表达式（Basic Regular Expression 又叫Basic RegEx  简称BREs）</li>
    <li>扩展的正则表达式（Extended Regular Expression 又叫Extended RegEx 简称EREs）</li>
    <li>Perl的正则表达式（Perl Regular Expression 又叫Perl RegEx 简称PREs） </li>
  </ol>
</div>
<div class="title">
  <h2>基本组成部分</h2>
  <p>正则表达式的基本组成部分。</p>
</div>
<div class="main">
  <ul class="line">
    <li class="bds c h">正则表达式</li>
    <li class="des c h">描述</li>
    <li class="exp c h">示例</li>
    <li class="bres c h">Basic RegEx</li>
    <li class="eres c h">Extended RegEx</li>
    <li class="pyres c h">Python RegEx</li>
    <li class="peres c h">Perl regEx</li>
  </ul>
  <ul class="line">
    <li class="bds c">\</li>
    <li class="des">转义符，将特殊字符进行转义，忽略其特殊意义</li>
    <li class="exp">a\.b匹配a.b，但不能匹配ajb，.被转义为特殊意义</li>
    <li class="bres c">\</li>
    <li class="eres c">\</li>
    <li class="pyres c">\</li>
    <li class="peres c">\</li>
  </ul>
  <ul class="line">
    <li class="bds c">^</li>
    <li class="des">匹配行首，awk中，^则是匹配字符串的开始</li>
    <li class="exp">^tux匹配以tux开头的行</li>
    <li class="bres c">^</li>
    <li class="eres c">^</li>
    <li class="pyres c">^</li>
    <li class="peres c">^</li>
  </ul>
  <ul class="line">
    <li class="bds c">$</li>
    <li class="des">匹配行尾，awk中，$则是匹配字符串的结尾</li>
    <li class="exp">tux$匹配以tux结尾的行</li>
    <li class="bres c">$</li>
    <li class="eres c">$</li>
    <li class="pyres c">$</li>
    <li class="peres c">$</li>
  </ul>
  <ul class="line">
    <li class="bds c">.</li>
    <li class="des">匹配除换行符\n之外的任意单个字符，awk则中可以</li>
    <li class="exp">ab.匹配abc或bad，不可匹配abcd或abde，只能匹配单字符</li>
    <li class="bres c">.</li>
    <li class="eres c">.</li>
    <li class="pyres c">.</li>
    <li class="peres c">.</li>
  </ul>
  <ul class="line">
    <li class="bds c">[]</li>
    <li class="des">匹配包含在[字符]之中的任意一个字符</li>
    <li class="exp">coo[kl]可以匹配cook或cool</li>
    <li class="bres c">[]</li>
    <li class="eres c">[]</li>
    <li class="pyres c">[]</li>
    <li class="peres c">[]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[^]</li>
    <li class="des">匹配[^字符]之外的任意一个字符</li>
    <li class="exp">123[^45]不可以匹配1234或1235，1236、1237都可以</li>
    <li class="bres c">[^]</li>
    <li class="eres c">[^]</li>
    <li class="pyres c">[^]</li>
    <li class="peres c">[^]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[-]</li>
    <li class="des">匹配[]中指定范围内的任意一个字符，要写成递增</li>
    <li class="exp">[0-9]可以匹配1、2或3等其中任意一个数字</li>
    <li class="bres c">[-]</li>
    <li class="eres c">[-]</li>
    <li class="pyres c">[-]</li>
    <li class="peres c">[-]</li>
  </ul>
  <ul class="line">
    <li class="bds c">?</li>
    <li class="des">匹配之前的项1次或者0次</li>
    <li class="exp">colou?r可以匹配color或者colour，不能匹配colouur</li>
    <li class="bres c">不支持</li>
    <li class="eres c">?</li>
    <li class="pyres c">?</li>
    <li class="peres c">?</li>
  </ul>
  <ul class="line">
    <li class="bds c">+</li>
    <li class="des">匹配之前的项1次或者多次</li>
    <li class="exp">sa-6+匹配sa-6、sa-666，不能匹配sa-</li>
    <li class="bres c">不支持</li>
    <li class="eres c">+</li>
    <li class="pyres c">+</li>
    <li class="peres c">+</li>
  </ul>
  <ul class="line">
    <li class="bds c">*</li>
    <li class="des">匹配之前的项0次或者多次</li>
    <li class="exp">co*l匹配cl、col、cool、coool等</li>
    <li class="bres c">*</li>
    <li class="eres c">*</li>
    <li class="pyres c">*</li>
    <li class="peres c">*</li>
  </ul>
  <ul class="line">
    <li class="bds c">()</li>
    <li class="des">匹配表达式，创建一个用于匹配的子串</li>
    <li class="exp">ma(tri)?匹配max或maxtrix</li>
    <li class="bres c">不支持</li>
    <li class="eres c">()</li>
    <li class="pyres c">()</li>
    <li class="peres c">()</li>
  </ul>
  <ul class="line">
    <li class="bds c">{n}</li>
    <li class="des">匹配之前的项n次，n是可以为0的正整数</li>
    <li class="exp">[0-9]{3}匹配任意一个三位数，可以扩展为[0-9][0-9][0-9]</li>
    <li class="bres c">不支持</li>
    <li class="eres c">{n}</li>
    <li class="pyres c">{n}</li>
    <li class="peres c">{n}</li>
  </ul>
  <ul class="line">
    <li class="bds c">{n,}</li>
    <li class="des">之前的项至少需要匹配n次</li>
    <li class="exp">[0-9]{2,}匹配任意一个两位数或更多位数</li>
    <li class="bres c">不支持</li>
    <li class="eres c">{n,}</li>
    <li class="pyres c">{n,}</li>
    <li class="peres c">{n,}</li>
  </ul>
  <ul class="line">
    <li class="bds c">{n,m}</li>
    <li class="des">指定之前的项至少匹配n次，最多匹配m次，n&lt;=m</li>
    <li class="exp">[0-9]{2,5}匹配从两位数到五位数之间的任意一个数字</li>
    <li class="bres c">不支持</li>
    <li class="eres c">{n,m}</li>
    <li class="pyres c">{n,m}</li>
    <li class="peres c">{n,m}</li>
  </ul>
  <ul class="line">
    <li class="bds c">|</li>
    <li class="des">交替匹配|两边的任意一项</li>
    <li class="exp">ab(c|d)匹配abc或abd</li>
    <li class="bres c">不支持</li>
    <li class="eres c">|</li>
    <li class="pyres c">|</li>
    <li class="peres c">|</li>
  </ul>
</div>
<div class="title">
  <h2>POSIX字符类</h2>
  <p>POSIX字符类是一个形如[:...:]的特殊元序列（meta sequence），他可以用于匹配特定的字符范围。</p>
</div>
<div class="main">
  <ul class="line">
    <li class="bds c h">正则表达式</li>
    <li class="des c h">描述</li>
    <li class="exp c h">示例</li>
    <li class="bres c h">Basic RegEx</li>
    <li class="eres c h">Extended RegEx</li>
    <li class="pyres c h">Python RegEx</li>
    <li class="peres c h">Perl regEx</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:alnum:]</li>
    <li class="des">匹配任意一个字母或数字字符</li>
    <li class="exp">[[:alnum:]]+</li>
    <li class="bres c">[:alnum:]</li>
    <li class="eres c">[:alnum:]</li>
    <li class="pyres c">[:alnum:]</li>
    <li class="peres c">[:alnum:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:alpha:]</li>
    <li class="des">匹配任意一个字母字符（包括大小写字母）</li>
    <li class="exp">[[:alpha:]]{4}</li>
    <li class="bres c">[:alpha:]</li>
    <li class="eres c">[:alpha:]</li>
    <li class="pyres c">[:alpha:]</li>
    <li class="peres c">[:alpha:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:blank:]</li>
    <li class="des">空格与制表符（横向和纵向）</li>
    <li class="exp">[[:blank:]]*</li>
    <li class="bres c">[:blank:]</li>
    <li class="eres c">[:blank:]</li>
    <li class="pyres c">[:blank:]</li>
    <li class="peres c">[:blank:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:digit:]</li>
    <li class="des">匹配任意一个数字字符</li>
    <li class="exp">[[:digit:]]?</li>
    <li class="bres c">[:digit:]</li>
    <li class="eres c">[:digit:]</li>
    <li class="pyres c">[:digit:]</li>
    <li class="peres c">[:digit:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:lower:]</li>
    <li class="des">匹配小写字母</li>
    <li class="exp">[[:lower:]]{5,}</li>
    <li class="bres c">[:lower:]</li>
    <li class="eres c">[:lower:]</li>
    <li class="pyres c">[:lower:]</li>
    <li class="peres c">[:lower:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:upper:]</li>
    <li class="des">匹配大写字母</li>
    <li class="exp">([[:upper:]]+)?</li>
    <li class="bres c">[:upper:]</li>
    <li class="eres c">[:upper:]</li>
    <li class="pyres c">[:upper:]</li>
    <li class="peres c">[:upper:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:punct:]</li>
    <li class="des">匹配标点符号</li>
    <li class="exp">[[:punct:]]</li>
    <li class="bres c">[:punct:]</li>
    <li class="eres c">[:punct:]</li>
    <li class="pyres c">[:punct:]</li>
    <li class="peres c">[:punct:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:space:]</li>
    <li class="des">匹配一个包括换行符、回车等在内的所有空白符</li>
    <li class="exp">[[:space:]]+</li>
    <li class="bres c">[:space:]</li>
    <li class="eres c">[:space:]</li>
    <li class="pyres c">[:space:]</li>
    <li class="peres c">[:space:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:graph:]</li>
    <li class="des">匹配任何一个可以看得见的且可以打印的字符</li>
    <li class="exp">[[:graph:]]</li>
    <li class="bres c">[:graph:]</li>
    <li class="eres c">[:graph:]</li>
    <li class="pyres c">[:graph:]</li>
    <li class="peres c">[:graph:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:xdigit:]</li>
    <li class="des">任何一个十六进制数（即：0-9，a-f，A-F）</li>
    <li class="exp">[[:xdigit:]]+</li>
    <li class="bres c">[:xdigit:]</li>
    <li class="eres c">[:xdigit:]</li>
    <li class="pyres c">[:xdigit:]</li>
    <li class="peres c">[:xdigit:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:cntrl:]</li>
    <li class="des">任何一个控制字符（<a href="http://zh.wikipedia.org/zh/ASCII" target="_blank">ASCII</a>字符集中的前32个字符)</li>
    <li class="exp">[[:cntrl:]]</li>
    <li class="bres c">[:cntrl:]</li>
    <li class="eres c">[:cntrl:]</li>
    <li class="pyres c">[:cntrl:]</li>
    <li class="peres c">[:cntrl:]</li>
  </ul>
  <ul class="line">
    <li class="bds c">[:print:]</li>
    <li class="des">任何一个可以打印的字符</li>
    <li class="exp">[[:print:]]</li>
    <li class="bres c">[:print:]</li>
    <li class="eres c">[:print:]</li>
    <li class="pyres c">[:print:]</li>
    <li class="peres c">[:print:]</li>
  </ul>
</div>
<div class="title">
  <h2>元字符</h2>
  <p>元字符（meta character）是一种Perl风格的正则表达式，只有一部分文本处理工具支持它，并不是所有的文本处理工具都支持。</p>
</div>
<div class="main">
  <ul class="line">
    <li class="bds c h">正则表达式</li>
    <li class="des c h">描述</li>
    <li class="exp c h">示例</li>
    <li class="bres c h">Basic RegEx</li>
    <li class="eres c h">Extended RegEx</li>
    <li class="pyres c h">Python RegEx</li>
    <li class="peres c h">Perl regEx</li>
  </ul>
  <ul class="line">
    <li class="bds c">\b</li>
    <li class="des">单词边界</li>
    <li class="exp">\bcool\b 匹配cool，不匹配coolant</li>
    <li class="bres c">\b</li>
    <li class="eres c">\b</li>
    <li class="pyres c">\b</li>
    <li class="peres c">\b</li>
  </ul>
  <ul class="line">
    <li class="bds c">\B</li>
    <li class="des">非单词边界</li>
    <li class="exp">cool\B 匹配coolant，不匹配cool</li>
    <li class="bres c">\B</li>
    <li class="eres c">\B</li>
    <li class="pyres c">\B</li>
    <li class="peres c">\B</li>
  </ul>
  <ul class="line">
    <li class="bds c">\d</li>
    <li class="des">单个数字字符</li>
    <li class="exp">b\db 匹配b2b，不匹配bcb</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\d</li>
    <li class="peres c">\d</li>
  </ul>
  <ul class="line">
    <li class="bds c">\D</li>
    <li class="des">单个非数字字符</li>
    <li class="exp">b\Db 匹配bcb，不匹配b2b</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\D</li>
    <li class="peres c">\D</li>
  </ul>
  <ul class="line">
    <li class="bds c">\w</li>
    <li class="des">单个单词字符（字母、数字与_）</li>
    <li class="exp">\w 匹配1或a，不匹配&amp;</li>
    <li class="bres c">\w</li>
    <li class="eres c">\w</li>
    <li class="pyres c">\w</li>
    <li class="peres c">\w</li>
  </ul>
  <ul class="line">
    <li class="bds c">\W</li>
    <li class="des">单个非单词字符</li>
    <li class="exp">\W 匹配&amp;，不匹配1或a</li>
    <li class="bres c">\W</li>
    <li class="eres c">\W</li>
    <li class="pyres c">\W</li>
    <li class="peres c">\W</li>
  </ul>
  <ul class="line">
    <li class="bds c">\n</li>
    <li class="des">换行符</li>
    <li class="exp">\n 匹配一个新行</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\n</li>
    <li class="peres c">\n</li>
  </ul>
  <ul class="line">
    <li class="bds c">\s</li>
    <li class="des">单个空白字符</li>
    <li class="exp">x\sx 匹配x x，不匹配xx</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\s</li>
    <li class="peres c">\s</li>
  </ul>
  <ul class="line">
    <li class="bds c">\S</li>
    <li class="des">单个非空白字符</li>
    <li class="exp">x\S\x 匹配xkx，不匹配xx</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\S</li>
    <li class="peres c">\S</li>
  </ul>
  <ul class="line">
    <li class="bds c">\r</li>
    <li class="des">回车</li>
    <li class="exp">\r 匹配回车</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\r</li>
    <li class="peres c">\r</li>
  </ul>
  <ul class="line">
    <li class="bds c">\t</li>
    <li class="des">横向制表符</li>
    <li class="exp">\t 匹配一个横向制表符</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\t</li>
    <li class="peres c">\t</li>
  </ul>
  <ul class="line">
    <li class="bds c">\v</li>
    <li class="des">垂直制表符</li>
    <li class="exp">\v 匹配一个垂直制表符</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\v</li>
    <li class="peres c">\v</li>
  </ul>
  <ul class="line">
    <li class="bds c">\f</li>
    <li class="des">换页符</li>
    <li class="exp">\f 匹配一个换页符</li>
    <li class="bres c">不支持</li>
    <li class="eres c">不支持</li>
    <li class="pyres c">\f</li>
    <li class="peres c">\f</li>
  </ul>
</div>
<div class="c" style="margin:30px auto">返回<a href="http://tool.biomooc.com/shell" target="_blank">tool.biomooc.com/shell</a></div>
</body>
</html>
